public class ReadMe {
    /**
     * 2023-3-21 http和tomcat和servlet
     * 1.创建项目全部用maven
     * 2.引入Javaweb
     * 3.get和post的区别？
     *      GET在浏览器回退时是无害的，而POST会再次提交请求。
     * GET产生的URL地址可以被Bookmark，而POST不可以。
     * GET请求会被浏览器主动cache，而POST不会，除非手动设置。
     * GET请求只能进行url编码，而POST支持多种编码方式。
     * GET请求参数会被完整保留在浏览器历史记录里，而POST中的参数不会被保留。
     * GET请求在URL中传送的参数是有长度限制的，而POST么有。
     * 对参数的数据类型，GET只接受ASCII字符，而POST没有限制。
     * GET比POST更不安全，因为参数直接暴露在URL上，所以不能用来传递敏感信息。
     * GET参数通过URL传递，POST放在Request body中。
     * 4.状态码：以4开头客户端错误（页面错误）以5开头就是服务的错误（Java代码）
     * 5.版本统一：servlet  4.0，tomcat  9.0  jdk  1.8
     * 6.安装tomcat的时候需要将port的值改为大于0即可
     * 7.为什么tomcat启动会直接跑到index.jsp页面？
     * 8.maven 引入jar包的时候，如果下载不了，可以将远程仓库的地址，修改为阿里云的地址
     * 9.servlet的生命周期？
     *      init 只会执行一次
     *      service 每次访问都会执行
     *      destroy  在程序正常结束后会执行
     * 10.对于继承HttpServlet然后重写方法？应该重写哪一个？
     *      doGet ：以后做查询使用，get请求会将参数放入浏览器地址
     *      doPost ：以后做更新使用（增加，修改，删除）,涉及到安全问题
     *      doget 只能存简单的数据，最大只能是16k
     *      dopost  所有数据都可以进行传递
     * -------------------------------------------
     * 掌握知识点：
     * 1.get和post的区别
     * 2.tomcat的配置与安装
     * 3.servlet的生命周期
     * 4. /  /*的区别
     *     @WebServlet("/") 表示如果用户输入的地址正确，则不走这里面的方法，否则直接走这里
     * 5.@WebServlet({"/index", "/indexa"}) 给前端提供一个访问接口地址
     */
    /**
     * 2023-3-22 请求和响应
     * 1.浏览器默认doget方法
     * 2、用于测试servlet的接口：工具，postman
     * 3.在servlet里面拿到前端请求的数据
     *      String username = req.getParameter("username");
     *      参数username对应的是前端地址里面的key值
     * 4.以后根据功能取判断使用doget还是dopost来确定Java  servlet到底重写那个方法
     * 5.接口地址一般由Java后台定义，然后给前端一个文件（帮助文档）
     * -------------------------
     * 项目开发：（瀑布）
     *      1 需求文档  产品经理    3
     *      2 设计模型 原型设计  产品经理  3
     *      3 UI    UI设计师   1
     *      4 web项目   前端工程师  1
     *      5 数据库分析设计文档   数据库工程师  1
     *      6 Java开发文档设计  后端工程师  1
     *      7 测试   测试工程师  1
     *      8 发布   运维工程师
     *      9 结束   收钱 1
     * 敏捷开发：交付物大于文档
     * ---------------------------------
     * 6.设置请求乱码： req.setCharacterEncoding(StandardCharsets.UTF_8.toString());
     * 7.前端数据请求后台然后发送给前端
     *      1）通过地址找到后台接口
     *      2）得到前端的数据
     *      3）存入req
     *      4）发送给前端
     *      5）在jsp页面得到数据 ${aa}
     * 8.servlet  作用域的问题？
     *      三大作用域
     *      request     只针对当前请求的页面
     *      session     req.getSession() 当前会话期都能得到里面的数据
     *      application  req.getServletContext() 跨浏览器也可以得到数据
     * 9.请求知识点：
     *      1）得到调用方法
     *      2）得到URI和URL
     *      3）得到前端传递过来的值
     *      4）设置乱码
     *      5）共享数据  三大作用域
     *      6）页面转发：将数据转发到指定页面
     *---------------------------------------------
     * 10.如果是重定向： resp.sendRedirect("/index.jsp");
     *      则浏览器地址直接变为新地址
     *    访问的是http://localhost:8081/r
     *    最后显示：http://localhost:8081/index.jsp
     *   如果是页面转发：req.getRequestDispatcher("/index.jsp").forward(req, resp);
     *   浏览器地址不变
     * 11.重定向不能进行数据共享：
     * 12.重定向和页面转发的区别？
     * 13.数据走向路径：
     *      1）点击页面转发---将username的值传递到Java后台
     *      2）在注解d里面，得到数据，存入req，转发到页面
     *      3）在页面通过${aa}接收后台的数据
     * 14：建议路径删除虚拟路径，用/开头
     * 15.在第三阶段进行页面转发和重定向
     * 16.在第四阶段以后，都用resp.getWriter().println(username);给前端传递数据
     * 17.response 响应给前端数据
     * 18：请求和响应 都应该由乱码处理？
     * 19.在servlet里面的步骤：
     *      1）乱码处理
     *      2）得到前端的值
     *      3）将值进行封装存入req、
     *      4）可能的逻辑处理
     *      5）页面转发或者重定向
     *
     */
    /**
     * 2023-3-23 jsp
     * 1.请求和响应：
     *      请求：前端发送数据到后台
     *              通过get/post方法
     *              通过地址接口：注解
     *              String key=  req.getParameter("key");
     *      响应：后台发送数据到前端
     *          req.setAttribute("key",value)
     *          数据转发给前端页面（jsp页面接收）${key}
     *          -------------------------
     *          重定向
     *          数据转发和重定向最大的区别就是重定向不能得到数据，纯粹是跳转页面
     * ---------------------------
     * 2.MVC模式：为了区分功能
     *  M   MODEL 模型  一般指JavaBean 对象
     *  V   VIEW  视图  页面
     *  C   CONTROLLER 控制器  这里指servlet
     * 3.命名规则：
     *      命名的时候最好带后缀：
     *      model：UserModel
     *      service：UserService
     *      servlet：UserServlet
     * 4.封装数据的时候推荐用Lombok
     *      1.加在jar包
     * 5.做了一个流程：用户增加的
     *      1.写对象  model  载体：依赖关系，其他层依赖当前model
     *      2.写页面 user.jsp  展示渲染的地方
     *      3.写servlet  五大步骤   调用逻辑层和页面打交道的地方
     *      4.写service 逻辑层   写逻辑的地方：处理逻辑业务的地方
     *      5.写dao   数据持久层    保持数据的地方
     * 6.案例：
     *      增加，查询，删除，修改
     *      1.写页面
     *      2.servlet 五大步骤
     *      3.model
     *      4.service
     *      5.dao
     *      6.util 工具层
     * 7.Integer.valueOf("afsd"),只要参数不是整型都会报错
     * 8.创建工具层
     *
     */
    /**
     * 2024-3-24 项目改造
     * 1.el表达式  ${}
     * 2.jstl标签 ：c:forEach
     * 3.MVC
     * 4.三层架构
     * 5.项目的结构：产品的增删改查（CRUD）
     *      1.页面add.jsp  点击提交按钮，将数据得到并传递到Java后台
     *      2.servlet页面控制层
     *              1）乱码处理
     *              2）得到前端的值
     *              3）将值封装到对象里面
     *              4）处理逻辑
     *              5）将处理的逻辑结果响应给前端
     *      3.service  服务逻辑层  处理逻辑的地方
     *      4.dao   数据持久层
     *      5.util  工具层
     * ---------------------------------------
     * 3.一般情况下更新用doPost，敏感信息用post，id为正常的数据，所以可以用get
     * 4.调用后台一般有几种形式
     *      1）form表单  action
     *      2）<a href="url"></a>
     *      3)<img src="url">
     *      4)window.location.href="url"
     *      5)window.open("url")
     *------------------------------------------------
     * 5.改造第一阶段内容
     *      1）有页面
     *      2)创建对象
     *      3）servlet
     * 6.jsp的主要目的就是简化前端：替换掉js
     * 7.页面上的数据应该来源于Java后台
     * 8.怎么将页面上的数据封装到Java后台
     * 9.在dao层存页面上的数据：按照面向对象的方式存取数据：
     *      即每一个对象model的数据应该对应一个dao层
     * 10.创建对象：提取项目有多少个对象
     * 11.一个页面对应一个servlet
     *      一个servlet对应多个对象
     *      一个对象对应一个model
     *      一个对象对应一个service
     *      一个对象对应一个dao
     * 12:记住后台代码的逻辑关系：几个层次分别做什么即可
     */
}
